package model.fantasma.estados;

import model.fantasma.tipos.FantasmaBuscador;
import model.fantasma.tipos.FantasmaBuscadorTemperamental;
import model.fantasma.tipos.FantasmaPerezoso;
import model.fantasma.tipos.FantasmaZonzo;
import model.interfaces.ICaminos;
import model.interfaces.IEstado;
import model.interfaces.IFantasma;
import model.interfaces.IPacman;
import model.utilidades.Vector;

public abstract class Estado implements IEstado {
	protected IFantasma fantasma;
	
	public Estado(IFantasma fantasma){
		this.fantasma = fantasma;
	}
	
	@Override
	public void moverComoBuscador(FantasmaBuscador fantasma, IPacman pacman,ICaminos nivel) {
		// ArrayList<Vector> posibles = nivel.obtenerDireccionesPosibles(fantasma.getPosition());

		 Vector vel = obtenerVelocidadComoBuscador();
		 
		 //int index = new Random().nextInt(posibles.size());
		 //Vector vel = posibles.get(index);
		 
		fantasma.mover(vel);
	}

	@Override
	public void moverComoBuscadorTemperamental(FantasmaBuscadorTemperamental fantasma, IPacman pacman,ICaminos nivel) {
		Vector vel = obtenerVelocidadComoBuscadorTemperamental();
		fantasma.mover(vel);	
	}

	@Override
	public void moverComoPerezoso(FantasmaPerezoso estado, IPacman pacman, ICaminos nivel) {
		Vector vel = obtenerVelocidadComoPerezoso();
		fantasma.mover(vel);		
	}

	@Override
	public void moverComoZonzo(FantasmaZonzo estado, IPacman pacman, ICaminos nivel) {
		Vector vel = obtenerVelocidadComoZonzo();
		fantasma.mover(vel);
	}

}
